home *** CD-ROM | disk | FTP | other *** search
-
- -------------- USERS MANUAL (Beta version) -----------
-
- My English is not that good, so if you feel
- like writing a better manual please contact me.
- (hykkelbj@daimi.aau.dk)
-
- 1. Introduction
- 2. How to use the Reject Map Builder
- 3. How to use the Inspect Utility
- 4. Making Special Effects
- 5. Using an Option File
- 6. Multilevel wads
- 7. Copyright notice
- 8. Authors note.
-
- --------------- 1. Introduction ----------------------
-
- The reject map builder is a utility that takes
- a PWAD file and finds out which sectors can be seen from
- a sector. This information is used by DOOM to speed up
- the real time action!
-
- The program should be used with care. The best would be,
- if it's only used by the author of a wad. The reason it
- should be used with care is, the reject map can be used
- for some special effects.
- These will be removed if the PWAD file is processed with RMB.
-
- The program was made after inspiration from a discussion on
- the doom editing mail list. Keep that list running! ;)
-
- The program was written in Turbo Pascal 6.0, and
- I started totally from scratch. "The Unofficial Doom Specs"
- has been a great help to me. Without it this program had never
- been made...
-
- NOTE:
- When the syntax of some command is given anything in
- square brackets is an optional parameter, and anything in curly
- brackets is a choice between more possibilities.
- The syntax:
-
- EFFECT <file>.WAD [EnMx] {BLIND, SAFE} {0, 1} <sector number>
-
- means that all these commands can be used:
-
- effect file.wad blind 0 22
- effect file.wad e1m2 safe 1 43
- effect file.wad e1m1 blind 1 55
- ...
- See the section on how to make special effects for
- an explanation of the effect utility.
- (or even better learn to write an option file)
-
- ------- 2. How to use the reject map builder -----------
-
- To use the reject map builder you need to unpack it into it's
- own directory, like c:\reject. When you want to run it on a WAD
- like for instance starwar1.wad simply go to the directory
- where you have put the program e.g:
-
- > cd c:\reject
-
- and type "RMB <filename>.WAD". that's all there is to it...
-
- > rmb c:\wadfiles\starwar1.wad
-
- If the file is a multilevel WAD (like starwar2 and others)
- this will make RMB process the first level in the wad.
- To process another level just type "RMB <filename>.WAD EnMx"
- where EnMx gives the episode and mission number.
-
- > rmb c:\wadfiles\starwar2.wad e1m2
- (to process episode 1 mission 2 in starwar2.wad).
-
- If the EnMx parameter isn't used RMB will process the first
- map in the WAD.
-
- When the program has finished processing, the
- efficiency will be shown. The efficiency is the percentage
- of 1's in the reject map. A high efficiency means that the
- speedup will be good. There is no need to run RMB
- on a PWAD that has already been processed. To check whether
- a file has been processed you can use the Inspect tool.
-
- -------- 3. How to use the inspect utility -------------
-
- The inspect utility inspects the current reject map of a PWAD
- without changing it. The statement syntax is:
-
- INSPECT <Filename>.WAD [EnMx] [Sector number]
-
- If it is used without a sector number, it will calculate
- the efficiency of the current reject map.
-
- > inspect c:\wadfiles\think12.wad
-
- Efficiency: 40%
-
- Called with a number after the WAD filename, It will tell you
- the sector numbers, that monsters can (presumably) see
- from this sector.
-
- > inspect c:\wadfiles\think12.wad 0
-
- Sectors visible from sector 0:
- 0,1,...
-
- The "EnMx" option lets you process multilevel wads.
- The following command:
-
- > inspect c:\wadfiles\starwar2.wad e1m2 0
-
- Sectors visible from sector 0:
- 0,1,...
-
- means that you want to inspect episode 1 mission 2
- in the WAD. If you don't use the EnMx option, you will
- automatically inspect the first map in the file.
-
- ---------------- 4. Making Special Effects ----------------
-
- NOTE: if you use the RMB utility all special effects are removed.
- (some wad editors will gladly remove them too)...
-
- With the EFFECT utility you can make special effects
- with the reject map. The syntax of EFFECT is:
-
- EFFECT <filename>.wad [EnMx] {SAFE, BLIND} {0, 1} <sector number>
-
-
- The SAFE option makes safe sectors.
- As long as you are in a safe sector the monsters won't
- shoot you. A safe sector is made like this:
-
- EFFECT <filename>.wad SAFE 0 <sector number>
-
- The '0' means, that at a distance of 0 or above, the monsters can't see you.
- currently only 0 and 1 is supported here.
- (1 meaning that monsters inside the safe sector can see you, but others can't)
-
- The other effect is BLIND. The following command makes all monsters
- inside a sector totally blind:
-
- EFFECT <filename>.wad BLIND 0 <sector number>
-
- again the zero can be exchanged with a 1, in which case the monsters
- are only extremely near sighted...
- (The effect of this is, that the monsters can only see you when you are
- in their sector). Note, that the monsters gain perfect vision, if they move
- out of the blinded sector.
-
- In all cases you can use ALL instead of the sector number (last argument).
- This will make all sectors safe or all monsters near sighted...
-
- Making all monsters blind will make a very dull game, but it may be good
- for playtesting a wad, to see, that all monsters are placed correctly...
-
- --------------- 5. Making an Option File ---------------
-
- An option file is a file that can be used to make more
- special effects in a WAD. The option file has the same name as
- the WAD file, and is placed in the same directory. The option file
- should have extension '.OPT'
- RMB will automatically detect the .OPT file, and process it.
-
- That is if the WAD is called MYLEVEL.WAD the option file would be
-
- MYLEVEL.OPT
-
- Now follows a list of all commands that can be used in the option file.
- Listed with the fastest first.
-
- # The '#' marks a comment line
- LENGTH <Distance>
- DISTANCE <Euclidian distance>
- BLIND <Sector> <Distance>
- LINE <Line no>
- LEFT <Line no>
- RIGHT <Line no>
- BLOCK <Line no> <Line no>
- ONE <Line no> <Line no>
- SAFE <Sector> <Distance>
- INV SAFE <Sector> <Distance>
- INV BLIND <Sector> <Distance>
- REPORT <Distance>
- PERFECT
-
- <Distance> The distance is the number of SECTORS between two sectors
- Counted in a strange way. For instance if you want the monsters in
- a sector to be totally blind use 'BLIND <Sector> 0'. If you want them
- to be able to see their own sector use 'BLIND <Sector> 1',
- for neighbours use 2 and so on.
-
- <Euclidian distance> Is the distance as we know it. A normal door
- is 128 wide, which is the euclidian distance across the door.
-
- <Line no> Is the number of a TWO SIDED line. This line number can be found
- using almost every WAD builder. (DEU5.21 recommended)
-
- <Sector> is the number of a sector. can also be found
- by the same WAD builder.
-
- In the following each command is explained in detail, but first
- a brief explanation: (sorted alphabetically)
-
- * BLIND Specifies the distance a monster can see (near sighted)
- BLOCK Monsters can't look through BOTH 2s lines (One is ok)
- DISTANCE The maximum distance a monster can see.
- * INV BLIND Specifies that monsters can only see outside the distance.
- * INV SAFE Monsters can't see this sector inside the distance.
- LEFT Makes a 2s line that can only be looked through left to right.
- LENGTH Specifies the max # of sectors any monster can see.
- LINE Makes a 2s line impossible to look through for monsters.
- ONE Same as block, but only stops LOS one way.
- PERFECT Generates a perfect reject map.
- REPORT Reports all detected distances >=<distance> to <wad file>.RPT
- RIGHT Makes a 2s line that can only be looked through right to left.
- * SAFE Monsters can't see this sector outside the distance.
-
- All options marked with '*' can change when combined with
- an inverted (INV) command for the same sector. More on this later.
- The next sections will explain the options in alphabetical order.
-
- 5.1 BLIND
-
- Syntax: Blind <Sector> <dist>
-
- The blind option makes the monsters in a sector totally blind,
- or near sighted. With distance zero the monsters can't see a
- thing. With distance 1 they can see their own sector.
- With distance two they can see their own sector and all neighbouring
- sectors. In this example we will use the option
-
- BLIND 4 3
-
- That means that monsters in sector 4 can only see across
- 2 two-sided lines.
-
- |----|----|----|----|----|----|----|----|
- | : : : : : : : |
- | 1 : 2 : 3 : 4 : 5 : 6 : 7 : 8 | (a ':' marks a 2s line)
- | : : : : : : : | (The numbers are sector numbers)
- |----|----|----|----|----|----|----|----|
-
- With this configuration of sectors 'blind 4 3' means, that
- a monster in sector 4 can see sectors 2,3,4,5 and 6 but not
- sectors 1, 7 and 8
-
- 5.2 BLOCK
-
- Syntax: Block <Line no> <Line no>
-
- RMB only processes the 2D map. If two sectors can't see each
- other because of some difference in height, the BLOCK option
- is perfect to make RMB realize this. An example where
- two sectors can't see each other is a high lift.
- The drawing here is seen from the side:
- ----
-
- D E
- |------|------|
- | o |
- | #3 \ |
- | /\ |
- | |------|
- | | ^
- | LIFT | |
- A B C | | example player
- |------|------|------| | position
- | |
- | #0 #1 #2 |
- | |
- |------|------|------|------|
-
- Here the sectors are marked with capital letters, and
- the two-sided lines are marked with a '#' and their line number.
- Because of the 3d difference in floor and ceiling heights sectors
- A and B can't see sector E.
- This is because you can't see from line #1 to line #3, and by
- using the option
-
- BLOCK 1 3
-
- The generated reject map will look like:
-
- A B C D E
- A x x x x
- B x x x x
- C x x x x x
- D x x x x x
- E x x x
-
- an 'x' means that you can see from one sector to the other.
- Note that just as expected sector E can't see sector A and B,
- and sector A and B cant see sector E. (where see means that
- the monsters in one sector cant see you if you are in the
- other sector.)
-
- Having the possibility to do 3d things like this may encourage
- you to go around you wad trying to find places where a BLOCK is
- in place. However if you do this just for gaining speed, you are
- bound to be disappointed, and the time invested will probably not
- pay off.
-
- 5.3 DISTANCE
-
- Syntax: DISTANCE <Euclidian distance>
-
- Distance will stop monsters from looking too far. It is very easy
- to get the Length and the Distance options mixed up, but where
- length makes an upper bound on the number of 2s lines monsters
- can look through, Distance is a better way to limit the
- distance of sight.
-
- To gain some intuition on how far a distance of say 600 is,
- it is a good thing to note, that a normal door is 128 wide,
- which means that a distance of 600 corresponds to about 5
- doors after each other (side by side). This means
- that if you set the option:
-
- Distance 600
-
- Monsters will not be able to see sectors more than 600 away,
- corresponding to a distance of 5 times the width of a door.
- However the distance option will first start to work after
- the first two sectors, meaning, that the monsters will
- always have the opportunity to see you if you are no more than
- 2 sectors away. (That is if there is no wall blocking the LOS
- in between)
-
- |-----|-----|-----|-----|
- | : : : |
- | 1 : 2 : 3 : 4 |
- | : : : |
- |-----|-----|-----|-----|
- <-----------> (the <--> shows the distance 1 to 4)
- This marks the distance between sector 1 and 4.
- note: It's always the minimum distance that counts.
-
- A monster in sector 1 will always be able to see sectors 2 and 3
- regardless of the distance used, but it will only be able to
- see sector 4, if the shown distance is smaller than the number
- given in the distance option.
-
- 5.4 INV BLIND
-
- Syntax: Inv Blind <Sector> <dist>
-
- Where BLIND makes monsters near sighted or totally blind
- INV BLIND makes monsters LONG sighted. This means that
- a monster inside the sector in question can only see
- sectors outside the distance. This means that where
- BLIND <sector> 1 makes the monster unable to see anything
- but it's own sector, INV BLIND <sector> 1 will make it unable to
- see it's own sector, but now it will be able to see all sectors
- further away.
-
- 5.5 INV SAFE
-
- Syntax: Inv Safe <Sector> <dist>
-
- (Please read the section about safe first)
-
- Where safe means that when you are in a safe sector
- the monsters has to get close to you to see you.
- INV SAFE means that only monsters outside the <distance> range can see you.
- As monsters will always move closer to you, the monsters will
- disable themselves as long as you are in the INV SAFE sector!
-
- 5.6 LEFT
-
- Syntax: Left <Line no>
-
- This option makes a two sided line into a one way look through line
- (for monsters). This means that if you have made a wall that is
- one way look through (texture on one side but not on the other)
- this option can help you make monsters respond logically to it.
-
- A B C
- |----|----|----|
- | ^ ^ |
- | #1 #2 |
- | : : |
- |----|----|----|
- the '^' shows that the two-sided lines are pointing up
-
- If line #1 has been made as a secret wall with a texture on
- it's right side but not on the left side. It should be possible
- to look through it only from the left to the right. This can be
- made by
-
- LEFT 1
-
- 5.7 LENGTH
-
- Syntax: Length <Distance>
-
- The length parameter makes an upper bound to the distance of
- any LOS. As there is an upper bound on the number of
- two sided lines DOOM can look through (version 1.2 lower).
- It should be safe to use
-
- LENGTH 17
-
- You should take great care if you want to set it any lower,
- as this could make monsters behave strangely.
-
- (If you have set LENGTH 10 and created a stair with 10 steps
- a monster at the top of the stair won't be able to see you at
- the button)
-
- NOTE: As this option affects ALL sectors care should be taken
- when you use a distance below 17.
-
- 5.8 LINE
-
- Syntax: Line <Line no>
-
- This option makes it impossible for monsters to see through a
- two-sided line. This is good if you have a 2s line with texture
- on both sides, so you can't see through it. Normally monsters
- will look through ANY 2s line, but with this option you can
- prevent them if you want.
-
- 5.9 ONE
-
- Syntax: One <Line no> <Line no>
-
- Where BLOCK blocks both ways ONE blocks only one way.
- This option is good in combination with one way look through
- walls (the left/right options). If you know for a fact, that
- there is a wall that blocks the LOS one way, so
- that It's only possible to look through the two lines one way,
- there is no need to make any extra calculations for the other
- way. That's why a ONE way block is a good idea.
-
- A B C D
- |----|----|----|-----|
- | ^ ^ : |
- | #1 #2 #3 |
- | : : : |
- |----|----|----|-----|
-
- Imagine that sector C is a lift sector, and line #1 can only be looked
- through from right to left. Now we want to block the LOS between sectors
- A and D, but since #1 is one way look through, we only need to block
- one way:
-
- RIGHT 1
- ONE 3 1
-
- The generated reject map is:
-
- A B C D
- A x
- B x x x x
- C x x x x
- D x x x
-
- 'x' means that one sector can see the other.
-
- Here A can't see B,C and D because line #1 is right to left
- look through. D can't see A because of the one way block.
- (If A were connected to more sectors to the left they wouldn't
- be able to see B,C,D either, and D wouldn't be able to see them.
- only B and C would be able to see everything).
-
- 5.10 PERFECT
-
- Syntax: Perfect
-
- When the perfect option is given, RMB will use more time
- to find sectors, that can't see each other. Without the
- perfect option all internal sectors
- (Sectors lying totally inside another sectors)
- will be able to see the same thing as the sector surrounding them.
- (Sectors that has a 1s linedef in them can't be internal sectors.)
-
- This means that without the perfect option internal sectors won't
- be processed. This means that SAFE, BLIND, BLOCK and ONE options that
- uses internal sectors, or lines adjacent to internal sectors won't
- be processed correctly! (They won't be processed at all)
- The good part about this is, that if you have a room with
- some decoration (Chairs, ...) generated by internal sectors,
- you can refer to all sectors in this room by using the sector number
- of the surrounding sector (the room).
-
- However if you have made a chair, and want the player
- to be safe when standing on it, you have to use the 'Perfect' option.
-
- Unfortunately the 'Perfect' option means that all sectors are
- generated perfectly. There is no way you can specify that only
- a part of the map should be perfect.
-
- This might come in the next version, if I ever get around to that :-)
-
- 5.11 REPORT
-
- Syntax: Report <Distance>
-
- If the report option is used a file with the same name as
- the WAD file but with '.RPT' extension is generated.
- This file contains all pairs of sectors that can see each other
- and lies at a distance greater than the given distance.
- Using a REPORT factor greater than the LENGTH factor is waste
- of time. It's a good idea to use the report with a distance equal
- to the length factor like this.
-
- LENGTH 18
- REPORT 18
-
- This will give you all pairs of sectors that lies at a distance
- greater than the DOOM engine can deal with. Often these
- sectors will be very far apart, and maybe the line of sight
- is blocked by a lot of doors on the way. In that case maybe
- It's an idea to make a BLOCK around the doors.
-
- (normally It's impossible to open more than 3 doors before the
- first door closes. This means that it's
- normally safe to place a block around 4 doors
- BLOCK <1st line of 1st door> <last line of 4th door>
- maybe you can even make a block around two or three doors.
- That depends on how fast the player can get to the next door
- to open it.
- Also remember that monsters can open doors...)
-
- 5.12 RIGHT
-
- Syntax: Right <Line no>
-
- Right makes a two sided line that can only be looked
- through by monsters right to left. (See also left)
-
- 5.13 SAFE
-
- Syntax: Safe <Sector> <Distance>
-
- Safe means that monsters has to get close to you to
- see you while you are in the safe sector.
- If you use 'safe <sector> 0' they can't see you even
- if they are in the same sector as you.
- 'safe <sector> 1' means that monsters can only see you
- if they are in your sector.
- 'safe <sector> 2' means the monsters can only see you
- if they are in a neighbouring sector or in your sector.
- 'safe <sector> <dist>' means that monsters can only see you
- if they are closer than <dist>
-
- ---------------- 5.14 Combining Options ----------------
-
- If you combine options like INV SAFE and SAFE
- for the same sector different things can happen.
- In this section all references will be to the following map:
-
- |-----|-----|-----|-----|-----|-----|-----|-----|
- | : : : : : : : :
- | 1 : 2 : 3 : 4 : 5 : 6 : 7 : 8 :
- | : : : : : : : :
- |-----|-----|-----|-----|-----|-----|-----|-----|
-
- (all numbers are sector numbers)
-
- if the distance in INV SAFE is greater than the distance
- in SAFE like:
-
- Safe 1 2
- Inv Safe 1 4
-
- both sectors with a distance below 2 and a distance
- above 4 can see sector 1.
- (that is monsters in sectors 1,2,5,6,7 and 8 can see sector 1)
-
- if the distance in INV SAFE is less than the distance
- in SAFE like:
-
- Safe 1 4
- Inv Safe 1 2
-
- only sectors with a distance above 2 and a distance
- below 4 can see sector 1.
- (that is monsters in sectors 3 and 4 can see sector 1)
-
- For BLIND the same rules apply:
-
- if the distance in INV BLIND is greater than the distance
- in BLIND like:
-
- Blind 1 2
- Inv Blind 1 4
-
- both sectors with a distance below 2 and a distance
- above 4 can be seen from sector 1.
- (that is a monster in sector 1 can see you if you are in
- one of the sectors 1,2,5,6,7 or 8)
-
- if the distance in INV BLIND is less than the distance
- in BLIND like:
-
- Blind 1 4
- Inv Blind 1 2
-
- only sectors with a distance above 2 and a distance
- below 4 can be seen from sector 1.
- (that is a monster in sector 1 can see you if you are in
- one of the sectors 3 or 4)
-
- ----------------- 6. Multilevel wads ------------------
-
- You have already seen in the previous sections how to handle
- multilevel wads together with the inspect and effect utilities.
- But what about the option file. Making a option like
- LEFT 311
- in the option file doesn't mean that you want this option
- to work for all levels in a multilevel wad.
- (line number 311 in one level has got nothing to do with
- line number 311 in another level...)
-
- To make options that only apply to a specific level you can
- add lines of the form "EnMx" to the options file.
-
- example:
- # This is an example of a multilevel option file.
- # The first lines are the default options.
- # These options will be used if RMB is called without
- # the EnMx parameter, or if there is no matching EnMx
- # in the options file.
- length 17
- Distance 600
-
- # Now comes the options used to process E1M1:
- E1M1
- # ^ This marks the end of the defaults, and the beginning
- # of the options that apply to e1m1.
- Length 17
- Distance 800
- Left 311
- Right 217
-
- E1M2
- # ^ Here stops the options for episode 1 mission 1,
- # and options for episode 1 mission 2 starts.
- Length 14
- Report 14
- Block 23 56
-
- # If RMB is called with a mission that is not in the options
- # file e.g. "e1m3", the default options at the beginning of
- # the file are used.
- # Otherwise RMB will search the options file until
- # it finds the correct EnMx, and then it will process
- # the options until it meets the next EnMx, where it stops.
- # Therefore it doesn't work if you write E1M2 (example)
- # more than once in an options file. (at least whats after the
- # second E1M2 will never be processed).
-
- Remember that if you want the options after any EnMx to be processed
- instead of the default options in the beginning, you must give
- the EnMx parameter to RMB. e.g.
-
- rmb c:\wadfiles\starwar2.wad e1m1
-
- For wads containing only one level, you can just use the default options
- without worry.
-
- ----------------- 7. Copyright notice ------------------
-
- Copyright:
- This program is totally free of charge.
- The program may be freely distributed.
- However the program or parts of it may NOT be used
- for commercial purposes or be included in commercial packages.
- (this includes shareware releases).
-
- Other notes:
- Doom is an Id software product, and is not free of charge.
-
- All wads mentioned in this text are not mine, and all credit
- for these wads should go to the respective authors
-
- --------------- 8. Authors note ---------------------------
-
- I am a 23 year old student at the university in Aarhus, Denmark.
- Any speling mislakes and semantic other errors has been
- introduced because of my lack of knowledge about the English
- language 8^)
-
- I use DEU5.21 and IDBSP for my own WADS.
- It is a good thing to use a rule checker like the one in DEU5.21
- before using this program!
-
- Jens Hykkelbjerg
- Email: hykkelbj@daimi.aau.dk
-